.TH std::asctime 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::asctime \- std::asctime

.SH Synopsis
   Defined in header <ctime>
   char* asctime( const std::tm* time_ptr );

   Converts given calendar time std::tm to a textual representation of the following
   fixed 25-character form: Www Mmm dd hh:mm:ss yyyy\\n.

     * Www - three-letter English abbreviated day of the week from time_ptr->tm_wday,
       one of Mon, Tue, Wed, Thu, Fri, Sat, Sun.
     * Mmm - three-letter English abbreviated month name from time_ptr->tm_mon, one of
       Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec.
     * dd - 2-digit day of the month from timeptr->tm_mday as if printed by sprintf
       using %2d.
     * hh - 2-digit hour from timeptr->tm_hour as if printed by sprintf using %.2d.
     * mm - 2-digit minute from timeptr->tm_min as if printed by sprintf using %.2d.
     * ss - 2-digit second from timeptr->tm_sec as if printed by sprintf using %.2d.
     * yyyy - 4-digit year from timeptr->tm_year + 1900 as if printed by sprintf using
       %4d.

   The behavior is undefined if any member of *time_ptr is outside its normal range.

   The behavior is undefined if the calendar year indicated by time_ptr->tm_year has
   more than 4 digits or is less than the year 1000.

   The function does not support localization, and the newline character cannot be
   removed.

   The function modifies static storage and is not thread-safe.

.SH Parameters

   time_ptr - pointer to a std::tm object specifying the time to print

.SH Return value

   Pointer to a static null-terminated character string holding the textual
   representation of date and time. The string may be shared between std::asctime and
   std::ctime, and may be overwritten on each invocation of any of those functions.

.SH Notes

   This function returns a pointer to static data and is not thread-safe. POSIX marks
   this function obsolete and recommends locale-dependent std::strftime instead. In
   std::locale("C") the std::strftime format string "%c\\n" will be an exact match to
   std::asctime output, while in other locales the format string
   "%a %b %e %H:%M:%S %Y\\n" will be a potentially closer but not always exact match.

   POSIX limits undefined behaviors only to the cases when the output string would be
   longer than 25 characters, when timeptr->tm_wday or timeptr->tm_mon are not within
   the expected ranges, or when timeptr->tm_year exceeds INT_MAX-1990.

   Some implementations handle timeptr->tm_mday == 0 as meaning the last day of the
   preceding month.

.SH Example


// Run this code

 #include <ctime>
 #include <iomanip>
 #include <iostream>

 int main()
 {
     const std::time_t now = std::time(nullptr);

     for (const char* localeName : {"C", "en_US.utf8", "de_DE.utf8", "ja_JP.utf8"})
     {
         std::cout << "locale " << localeName << ":\\n" << std::left;
         std::locale::global(std::locale(localeName));

         std::cout << std::setw(40) << "    asctime" << std::asctime(std::localtime(&now));

         // strftime output for comparison:
         char buf[64];
         if (strftime(buf, sizeof buf, "%c\\n", std::localtime(&now)))
             std::cout << std::setw(40) << "    strftime %c" << buf;

         if (strftime(buf, sizeof buf, "%a %b %e %H:%M:%S %Y\\n", std::localtime(&now)))
             std::cout << std::setw(40) << "    strftime %a %b %e %H:%M:%S %Y" << buf;

         std::cout << '\\n';
     }
 }

.SH Possible output:

 locale C:
     asctime                             Wed Nov  4 00:45:01 2020
     strftime %c                         Wed Nov  4 00:45:01 2020
     strftime %a %b %e %H:%M:%S %Y       Wed Nov  4 00:45:01 2020

 locale en_US.utf8:
     asctime                             Wed Nov  4 00:45:01 2020
     strftime %c                         Wed 04 Nov 2020 12:45:01 AM UTC
     strftime %a %b %e %H:%M:%S %Y       Wed Nov  4 00:45:01 2020

 locale de_DE.utf8:
     asctime                             Wed Nov  4 00:45:01 2020
     strftime %c                         Mi 04 Nov 2020 00:45:01 UTC
     strftime %a %b %e %H:%M:%S %Y       Mi Nov  4 00:45:01 2020

 locale ja_JP.utf8:
     asctime                             Wed Nov  4 00:45:01 2020
     strftime %c                         2020年11月04日 00時45分01秒
     strftime %a %b %e %H:%M:%S %Y       水 11月  4 00:45:01 2020

.SH See also

   ctime    converts a std::time_t object to a textual representation
            \fI(function)\fP
   strftime converts a std::tm object to custom textual representation
            \fI(function)\fP
   put_time formats and outputs a date/time value according to the specified format
   \fI(C++11)\fP  \fI(function template)\fP
   C documentation for
   asctime
